#![allow(unused_imports, non_snake_case, non_camel_case_types)]
use super::windows::*;
use super::*;

#[repr(C)]
pub struct IDWriteFactory1Vtbl {
	pub parent: IDWriteFactoryVtbl,
	pub GetEudcFontCollection: unsafe extern "system" fn(This: *mut IDWriteFactory1, fontCollection: *mut *mut IDWriteFontCollection, checkForUpdates: BOOL) -> HRESULT,
	pub CreateCustomRenderingParams: unsafe extern "system" fn(This: *mut IDWriteFactory1, gamma: FLOAT, enhancedContrast: FLOAT, enhancedContrastGrayscale: FLOAT, clearTypeLevel: FLOAT, pixelGeometry: DWRITE_PIXEL_GEOMETRY, renderingMode: DWRITE_RENDERING_MODE, renderingParams: *mut *mut IDWriteRenderingParams1) -> HRESULT,
}
#[repr(C)]
pub struct IDWriteFactory1 {
	pub lpVtbl: *const IDWriteFactory1Vtbl,
}
impl IDWriteFactory1 {
	#[inline]
	pub unsafe fn GetEudcFontCollection(&self, fontCollection: *mut *mut IDWriteFontCollection, checkForUpdates: BOOL) -> HRESULT {
		((*self.lpVtbl).GetEudcFontCollection)(self as *const _ as *mut _, fontCollection, checkForUpdates)
	}
	#[inline]
	pub unsafe fn CreateCustomRenderingParams(&self, gamma: FLOAT, enhancedContrast: FLOAT, enhancedContrastGrayscale: FLOAT, clearTypeLevel: FLOAT, pixelGeometry: DWRITE_PIXEL_GEOMETRY, renderingMode: DWRITE_RENDERING_MODE, renderingParams: *mut *mut IDWriteRenderingParams1) -> HRESULT {
		((*self.lpVtbl).CreateCustomRenderingParams)(self as *const _ as *mut _, gamma, enhancedContrast, enhancedContrastGrayscale, clearTypeLevel, pixelGeometry, renderingMode, renderingParams)
	}
}
impl core::ops::Deref for IDWriteFactory1 {
	type Target = IDWriteFactory;
	#[inline]
	fn deref(&self) -> &IDWriteFactory {
		unsafe { &*(self as *const IDWriteFactory1 as *const IDWriteFactory) }
	}
}
impl Interface for IDWriteFactory1 {
	#[inline]
	fn uuidof() -> GUID {
		GUID { Data1: 0x30572f99, Data2: 0xdac6, Data3: 0x41db, Data4: [0xa1, 0x6e, 0x04, 0x86, 0x30, 0x7e, 0x60, 0x6a] }
	}
}
